﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Runtime.CompilerServices;
using Com.Binaria.Core;
using Com.Binaria.Core.Base;
using Com.Binaria.Core.Dto;
using Com.Binaria.Core.Util;
using Com.Binaria.Core.Datos;
using Com.Binaria.SISCOB.DTO;

namespace Com.Binaria.SISCOB.DAO
{
/// <summary>
///	Clase encargada de la gestion de informacion del objeto DocumentoTransaccion
/// </summary>
public partial class DocumentoTransaccionDAO :IDocumentoTransaccionDAO 
{


	

	
	///<summary>
	///Metodo que obtinen todos los registro en la tabla DocumentoTransaccion que coincidan
	///con los campos de busqueda provistos por el dto (DocumentoTransaccionDTO
	///</summary>
	///<param name="DocumentoTransaccionDTO"></param>
	///<returns></returns>
    public List<DocumentoTransaccionDTO> BuscarIngresoObservado(ConciliacionDTO p_ConcDTO)
	{
        ConciliacionDTO dto = ((ConciliacionDTO)p_ConcDTO);
		DatosService servicio= Factoria.ServicioDatos("SISCOB");
		DbParameter[] parameters = servicio.GetParameterCollection(3);
		
		parameters[0] = servicio.GetParameter();
		parameters[0].Direction=ParameterDirection.Input;
		parameters[0].ParameterName="@IdCuentaCorriente";
		parameters[0].Value=AssertNull.getValueToBD(dto.IdCuentaCorriente);
		parameters[0].DbType=DbType.Int32;
		
		parameters[1] = servicio.GetParameter();
		parameters[1].Direction=ParameterDirection.Input;
		parameters[1].ParameterName="@FchDesde";
		parameters[1].Value=AssertNull.getValueToBD(dto.FchDesde);
		parameters[1].DbType=DbType.DateTime;
		
		parameters[2] = servicio.GetParameter();
		parameters[2].Direction=ParameterDirection.Input;
		parameters[2].ParameterName="@FchHasta";
		parameters[2].Value=AssertNull.getValueToBD(dto.FchHasta);
		parameters[2].DbType=DbType.DateTime;


        IDataReader reader = servicio.ExecuteReader("spma_DocumentoTransaccion_FindIngresoObservado", parameters);
		List<DocumentoTransaccionDTO> lista= CreateDtos(reader);
		
        return lista;
	}


    ///<summary>
    ///Metodo que obtinen todos los registro en la tabla DocumentoTransaccion que coincidan
    ///con los campos de busqueda provistos por el dto (DocumentoTransaccionDTO
    ///</summary>
    ///<param name="DocumentoTransaccionDTO"></param>
    ///<returns></returns>
    public List<DocumentoTransaccionDTO> BuscarEgresoObservado(ConciliacionDTO p_ConcDTO)
    {
        ConciliacionDTO dto = ((ConciliacionDTO)p_ConcDTO);
        DatosService servicio = Factoria.ServicioDatos("SISCOB");
        DbParameter[] parameters = servicio.GetParameterCollection(3);

        parameters[0] = servicio.GetParameter();
        parameters[0].Direction = ParameterDirection.Input;
        parameters[0].ParameterName = "@IdCuentaCorriente";
        parameters[0].Value = AssertNull.getValueToBD(dto.IdCuentaCorriente);
        parameters[0].DbType = DbType.Int32;

        parameters[1] = servicio.GetParameter();
        parameters[1].Direction = ParameterDirection.Input;
        parameters[1].ParameterName = "@FchDesde";
        parameters[1].Value = AssertNull.getValueToBD(dto.FchDesde);
        parameters[1].DbType = DbType.DateTime;

        parameters[2] = servicio.GetParameter();
        parameters[2].Direction = ParameterDirection.Input;
        parameters[2].ParameterName = "@FchHasta";
        parameters[2].Value = AssertNull.getValueToBD(dto.FchHasta);
        parameters[2].DbType = DbType.DateTime;


        IDataReader reader = servicio.ExecuteReader("spma_DocumentoTransaccion_FindEgresoObservado", parameters);
        List<DocumentoTransaccionDTO> lista = CreateDtos(reader);

        return lista;
    }


    ///<summary>
    ///Metodo que obtinen todos los registro en la tabla DocumentoTransaccion que coincidan
    ///con los campos de busqueda provistos por el dto (DocumentoTransaccionDTO
    ///</summary>
    ///<param name="DocumentoTransaccionDTO"></param>
    ///<returns></returns>
    public List<DocumentoTransaccionDTO> FindByEgreso(DocumentoTransaccionDTO dtoin)
    {
        DocumentoTransaccionDTO dto = ((DocumentoTransaccionDTO)dtoin);
        DatosService servicio = Factoria.ServicioDatos("SISCOB");
        DbParameter[] parameters = servicio.GetParameterCollection(2);


        parameters[0] = servicio.GetParameter();
        parameters[0].Direction = ParameterDirection.Input;
        parameters[0].ParameterName = "@IdCuentaCorriente";
        parameters[0].Value = AssertNull.getValueToBD(dto.IdCuentaCorriente);
        parameters[0].DbType = DbType.Int32;


        parameters[1] = servicio.GetParameter();
        parameters[1].Direction = ParameterDirection.Input;
        parameters[1].ParameterName = "@NmrDocumento";
        parameters[1].Value = AssertNull.getValueToBD(dto.NmrDocumento);
        parameters[1].DbType = DbType.AnsiString;

        IDataReader reader = servicio.ExecuteReader("spma_DocumentoTransaccion_FindByEgreso", parameters);
        List<DocumentoTransaccionDTO> lista = CreateDtos(reader);

        return lista;
    }


    ///<summary>
    ///Metodo que obtinen todos los registro en la tabla DocumentoTransaccion que coincidan
    ///con los campos de busqueda provistos por el dto (DocumentoTransaccionDTO
    ///</summary>
    ///<param name="DocumentoTransaccionDTO"></param>
    ///<returns></returns>
    public List<DocumentoTransaccionDTO> FindByIngreso(DocumentoTransaccionDTO dtoin)
    {
        DocumentoTransaccionDTO dto = ((DocumentoTransaccionDTO)dtoin);
        DatosService servicio = Factoria.ServicioDatos("SISCOB");
        DbParameter[] parameters = servicio.GetParameterCollection(3);


        parameters[0] = servicio.GetParameter();
        parameters[0].Direction = ParameterDirection.Input;
        parameters[0].ParameterName = "@IdCuentaCorriente";
        parameters[0].Value = AssertNull.getValueToBD(dto.IdCuentaCorriente);
        parameters[0].DbType = DbType.Int32;

        parameters[1] = servicio.GetParameter();
        parameters[1].Direction = ParameterDirection.Input;
        parameters[1].ParameterName = "@Monto";
        parameters[1].Value = AssertNull.getValueToBD(dto.Monto);
        parameters[1].DbType = DbType.Int64;

        parameters[2] = servicio.GetParameter();
        parameters[2].Direction = ParameterDirection.Input;
        parameters[2].ParameterName = "@FchDocumento";
        parameters[2].Value = AssertNull.getValueToBD(dto.FchDocumento);
        parameters[2].DbType = DbType.DateTime;

        IDataReader reader = servicio.ExecuteReader("spma_DocumentoTransaccion_FindByIngreso", parameters);
        List<DocumentoTransaccionDTO> lista = CreateDtos(reader);

        return lista;
    }


    ///<summary>
    ///Metodo que obtinen todos los registro en la tabla DocumentoTransaccion que coincidan
    ///con los campos de busqueda provistos por el dto (DocumentoTransaccionDTO
    ///</summary>
    ///<param name="DocumentoTransaccionDTO"></param>
    ///<returns></returns>
    public List<DocumentoTransaccionDTO> FindByIngresoNoAbonado(DocumentoTransaccionDTO dtoin)
    {
        DocumentoTransaccionDTO dto = ((DocumentoTransaccionDTO)dtoin);
        DatosService servicio = Factoria.ServicioDatos("SISCOB");
        DbParameter[] parameters = servicio.GetParameterCollection(1);


        parameters[0] = servicio.GetParameter();
        parameters[0].Direction = ParameterDirection.Input;
        parameters[0].ParameterName = "@IdCuentaCorriente";
        parameters[0].Value = AssertNull.getValueToBD(dto.IdCuentaCorriente);
        parameters[0].DbType = DbType.Int32;

        IDataReader reader = servicio.ExecuteReader("spma_DocumentoTransaccion_FindByIngresoNoAbonado", parameters);
        List<DocumentoTransaccionDTO> lista = CreateDtos(reader);

        return lista;
    }


	}//End class DocumentoTransaccionDAO
}//End namespace



